package cn.jboa.dao;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

public interface BaseDao<T> {
    public  void  save(T instance);

    public  void  update(T instance);

    public  T merge(T instance);

    public  void  delete(T instance);
        //删除一组集合
    public  void  delete(Collection<T> instances);
        //传入一组id删除
    public  Integer  delete(Class<T> cls,Object[] ids);
        //按主键查询
    public  T get(Class<T> cls, Serializable id);
        //全部查询
    public List<T> findAll( Class<T> cls);
        //分页投影查询 自定义 根据接收返回值的类型来决定泛型的具体类型
        // hql语句,页码，每页多少条，动态参数
    public <E> List<E> findForPage(String hql,int pagNo,int pageSize, Object ...values);
        //得到总记录数
        public  Number getTotalCount(String hql,Object...values);

        public  <E> List<E>find(String hql,Object ...values);
}
